﻿/*
 Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
(function () {
  CKEDITOR.dialog.add('templates', function (c) {
    function r(a, b) {
      var m = CKEDITOR.dom.element.createFromHtml(
          '\x3ca href\x3d"javascript:void(0)" tabIndex\x3d"-1" role\x3d"option" \x3e\x3cdiv class\x3d"cke_tpl_item"\x3e\x3c/div\x3e\x3c/a\x3e'
        ),
        d =
          '\x3ctable style\x3d"width:350px;" class\x3d"cke_tpl_preview" role\x3d"presentation"\x3e\x3ctr\x3e';
      a.image &&
        b &&
        (d +=
          '\x3ctd class\x3d"cke_tpl_preview_img"\x3e\x3cimg src\x3d"' +
          CKEDITOR.getUrl(b + a.image) +
          '"' +
          (CKEDITOR.env.ie6Compat
            ? ' onload\x3d"this.width\x3dthis.width"'
            : '') +
          ' alt\x3d"" title\x3d""\x3e\x3c/td\x3e');
      d +=
        '\x3ctd style\x3d"white-space:normal;"\x3e\x3cspan class\x3d"cke_tpl_title"\x3e' +
        a.title +
        '\x3c/span\x3e\x3cbr/\x3e';
      a.description && (d += '\x3cspan\x3e' + a.description + '\x3c/span\x3e');
      d += '\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e';
      m.getFirst().setHtml(d);
      m.on('click', function () {
        t(a.html);
      });
      return m;
    }
    function t(a) {
      var b = CKEDITOR.dialog.getCurrent();
      b.getValueOf('selectTpl', 'chkInsertOpt')
        ? (c.fire('saveSnapshot'),
          c.setData(a, function () {
            b.hide();
            var a = c.createRange();
            a.moveToElementEditStart(c.editable());
            a.select();
            setTimeout(function () {
              c.fire('saveSnapshot');
            }, 0);
          }))
        : (c.insertHtml(a), b.hide());
    }
    function k(a) {
      var b = a.data.getTarget(),
        c = g.equals(b);
      if (c || g.contains(b)) {
        var d = a.data.getKeystroke(),
          f = g.getElementsByTag('a'),
          e;
        if (f) {
          if (c) e = f.getItem(0);
          else
            switch (d) {
              case 40:
                e = b.getNext();
                break;
              case 38:
                e = b.getPrevious();
                break;
              case 13:
              case 32:
                b.fire('click');
            }
          e && (e.focus(), a.data.preventDefault());
        }
      }
    }
    var h = CKEDITOR.plugins.get('templates');
    CKEDITOR.document.appendStyleSheet(
      CKEDITOR.getUrl(h.path + 'dialogs/templates.css')
    );
    var g,
      h = 'cke_tpl_list_label_' + CKEDITOR.tools.getNextNumber(),
      f = c.lang.templates,
      n = c.config;
    return {
      title: c.lang.templates.title,
      minWidth: CKEDITOR.env.ie ? 440 : 400,
      minHeight: 340,
      contents: [
        {
          id: 'selectTpl',
          label: f.title,
          elements: [
            {
              type: 'vbox',
              padding: 5,
              children: [
                {
                  id: 'selectTplText',
                  type: 'html',
                  html: '\x3cspan\x3e' + f.selectPromptMsg + '\x3c/span\x3e',
                },
                {
                  id: 'templatesList',
                  type: 'html',
                  focus: !0,
                  html:
                    '\x3cdiv class\x3d"cke_tpl_list" tabIndex\x3d"-1" role\x3d"listbox" aria-labelledby\x3d"' +
                    h +
                    '"\x3e\x3cdiv class\x3d"cke_tpl_loading"\x3e\x3cspan\x3e\x3c/span\x3e\x3c/div\x3e\x3c/div\x3e\x3cspan class\x3d"cke_voice_label" id\x3d"' +
                    h +
                    '"\x3e' +
                    f.options +
                    '\x3c/span\x3e',
                },
                {
                  id: 'chkInsertOpt',
                  type: 'checkbox',
                  label: f.insertOption,
                  'default': n.templates_replaceContent,
                },
              ],
            },
          ],
        },
      ],
      buttons: [CKEDITOR.dialog.cancelButton],
      onShow: function () {
        var a = this.getContentElement('selectTpl', 'templatesList');
        g = a.getElement();
        CKEDITOR.loadTemplates(n.templates_files, function () {
          var b = (n.templates || 'default').split(',');
          if (b.length) {
            var c = g;
            c.setHtml('');
            for (var d = 0, h = b.length; d < h; d++)
              for (
                var e = CKEDITOR.getTemplates(b[d]),
                  k = e.imagesPath,
                  e = e.templates,
                  q = e.length,
                  l = 0;
                l < q;
                l++
              ) {
                var p = r(e[l], k);
                p.setAttribute('aria-posinset', l + 1);
                p.setAttribute('aria-setsize', q);
                c.append(p);
              }
            a.focus();
          } else g.setHtml('\x3cdiv class\x3d"cke_tpl_empty"\x3e\x3cspan\x3e' + f.emptyListMsg + '\x3c/span\x3e\x3c/div\x3e');
        });
        this._.element.on('keydown', k);
      },
      onHide: function () {
        this._.element.removeListener('keydown', k);
      },
    };
  });
})();
